/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Controllers;


import cl.ventas.modelo.Producto;
import cl.ventas.modelo.Usuario;
import cl.ventas.modelo.dao.ProductoControl;
import cl.ventas.modelo.dao.UsuarioDao;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;


public class admController extends MultiActionController{
    public ModelAndView ListadoAdmin(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("ListadoAdmin");
        return mav;
    }
    public ModelAndView ListadoUsers(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("ListadoUsers");
        return mav;
    }
    public ModelAndView ListaVentas (HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("ListaVentas");
        return mav;
    }
     public ModelAndView DetalleVenta (HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("DetalleVenta");
        return mav;
    }
     public ModelAndView formularioProducto (HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("formularioProducto");
        return mav;
    }
     public ModelAndView validaProducto (HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = null;
        List errorp = new LinkedList();
        ProductoControl prod = new ProductoControl();
        try{
        String name = request.getParameter("nombre");
        String precio = request.getParameter("precio");
        String stock = request.getParameter("stock");
        int price=0;
        double stoke=0;
        if (name==null||name.trim().length()==0){
        errorp.add("Ingrese nombre del producto.");
        }
        
        if (stock ==null||stock.trim().length()==0){
        errorp.add("Ingrese cantidad.");
        }else {
        try {
        stoke = Double.parseDouble(stock);
        if (stoke<0){
        errorp.add("La cantidad debe ser positiva.");
        }
        
        }
        
        catch(NumberFormatException e){
         errorp.add("La cantidad debe ser un");
         errorp.add("valor entero o decimal.");
        }}
        
        if (precio==null||precio.trim().length()==0){
         errorp.add("Ingrese precio.");
        }
        else {
        try{
        price = Integer.parseInt(precio);
        if (price<0){errorp.add("El precio debe ser positivo.");}
        }
        catch (NumberFormatException e){
         errorp.add("El precio debe ser un");
         errorp.add("número entero.");
        }
        
        
        
        }
        int code =Integer.parseInt(request.getParameter("codigo"));
        
        
        if ( ! errorp.isEmpty() ) {

        mav = new ModelAndView("formularioProducto");
        mav.addObject("errorp", errorp);

        }
        else {
        Producto p = new Producto();
        p.setCodigo(code);
        p.setNombre(name);
        p.setPrecio(price);
        p.setStock(stoke);
        prod.save(p);
        
        response.sendRedirect("ListadoAdmin.htm");
        }
        }
        catch (RuntimeException e){
        errorp.add("ocurrio un error inesperado");
        errorp.add(e);
        mav = new ModelAndView("error");
        mav.addObject("errorMsgs", errorp);
        }
        return mav;
    }
     public ModelAndView AddUsuario (HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("AddUsuario");
        return mav;
    }
    public ModelAndView GuardaUserAdmin(HttpServletRequest request, HttpServletResponse response) throws Exception {
         ModelAndView mav = null;
        List errorMsgs = new LinkedList();
        UsuarioDao usuario = new UsuarioDao();
       
        List<Usuario> lista = usuario.findAll();
        try {
        
        String name = request.getParameter("usuario_nombre");
        String apellido= request.getParameter("usuario_apellido");
        String user = request.getParameter ("usuario_user");
        String pw = request.getParameter("usuario_clave");

        if (name.trim().length()==0||name==null){
        errorMsgs.add("Ingrese su nombre");
        }
        if (apellido.trim().length()==0||apellido==null){
        errorMsgs.add("Ingrese su apellido");
        }
        if (user.trim().length()==0||user==null){
        errorMsgs.add("Ingrese su usuario");
        }
        if (Integer.parseInt(request.getParameter("usuario_codigo"))==0){
       
       if (lista!=null){
       for (int i = 0 ; i<lista.size();i++){
       if (lista.get(i).getUsuario_user().compareTo(user)==0){
       errorMsgs.add("El usuario ya existe");
       }}}}
       
        if (pw.trim().length()==0||pw==null){
        errorMsgs.add("Ingrese su contraseña");
        }

        if ( ! errorMsgs.isEmpty() ) {
        mav = new ModelAndView("AddUsuario");
        mav.addObject("errorMsgs", errorMsgs);

        }

        else {
         Usuario u=new Usuario();
        u.setUsuario_apellido(apellido);
        u.setUsuario_clave(pw);
        u.setUsuario_nombre(name);
        u.setUsuario_privilegio(0);
        u.setUsuario_user(user); 

        usuario.save(u);
      
        mav = new ModelAndView("ListadoUsers");
        }
        }
        catch (RuntimeException e){
        errorMsgs.add("ocurrio un error inesperado");
        errorMsgs.add(e);
        mav = new ModelAndView("error");
        mav.addObject("errorMsgs", errorMsgs);
        }
        return mav;
    }
     

}
